package archive

import (
	"fmt"
	"github.com/gogf/gf/v2/text/gstr"
)

type Xzip struct{}

func (r *Xzip) Archive(source []string, destination string) error {
	fmt.Printf("xzip archive\n")
	fmt.Printf("source: %s\n", gstr.Implode(" ", source))
	fmt.Printf("destination: %s\n", destination)

	return nil
}

func (r *Xzip) Extract(source string, destination []string) error {
	fmt.Printf("xzip extract\n")
	fmt.Printf("source: %s\n", source)
	fmt.Printf("destination: %s\n", gstr.Implode(" ", destination))

	return nil
}

//
//var ArchiveXz = &archiveXz{}
//
//type archiveXz struct{}
//
//func (receiver *archiveXz) TarReader(source string) (io.Reader, error) {
//	fileReader, err := os.Open(source)
//	if err != nil {
//		return nil, err
//	}
//	defer fileReader.Close()
//
//	xzReader, err := xz.NewReader(fileReader, 0)
//	if err != nil {
//		return nil, err
//	}
//
//	return tar.NewReader(xzReader), nil
//}

// func (receiver *archiveXz) TarWriter(target string) (io.Writer, error) {
//     fileWriter, err := os.Create(target)
//     if err != nil {
//         return nil, err
//     }
//     defer fileWriter.Close()
//
//     xzWriter, err := xz.NewWriter(fileWriter, 0)
//     if err != nil {
//         return nil, err
//     }
//
//     return tar.NewWriter(xzWriter), nil
// }
